Program: /*Stack Using Array*/ #include #include #define MAX 10 struct stack { int a[MAX]; int top; }s1; void main() { int r,ch; clrscr(); s1.top=-1; while(1) { printf("\nEnter\n1-Push\n2-Pop\n3-Stacktop\n4-Display\n5-Exit\n"); scanf("%d",&ch); switch(ch) { case 1: printf("Enter a element\t"); scanf("%d",&r); push(&s1,r); break; case 2: r=pop(&s1); printf("The top = %d\n",r); break; case 3: r=stacktop(&s1); printf("The top = %d\n",r); break; case 4: display(s1); break; default: printf("~~~Exit~~~"); getch(); exit(0); } } } push(struct stack *m,int elt) { if(m->top==MAX) { printf("\nStack is full"); getch(); exit(0); } m->top++; m->a[m->top]=elt; } int pop(struct stack *n) { int x; if(n->top==-1) { printf("\nStack is empty"); getch(); exit(0); } x=n->a[n->top]; n->top--; return(x); } int stacktop(struct stack *o) { if(o->top==-1) { printf("\nStack is empty"); getch(); exit(0); } return(o->a[o->top]); } display(struct stack q) { int i; if(q.top==-1) { printf("\nstack is empty"); getch(); exit(0); } for(i=q.top;i>=0;i--) { printf(" %d -> %d\n",i,q.a[i]); } } OUTPUT: Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 1 Enter a element 10 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 1 Enter a element 20 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 3 The top = 20 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 4 1 -> 20 0 -> 10 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 2 The top = 20 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 4 0 -> 10 Enter: 1-Push 2-Pop 3-Stacktop 4-Display 5-Exit 5 ~~~Exit~~~